#include <stdio.h>
#include <string.h>

void swap(char ch[], int len) {
    for (int i = 0; i < len; i++) {
        // 将当前字节的高4位和低4位互换
        char high = (ch[i] & 0xF0) / 16; // 相当于右移4位
        char low = (ch[i] & 0x0F) * 16;  // 相当于左移4位
        ch[i] = high | low;
    }
}

int main(int argc, char const *argv[]) {
    /* .现有 1M 长度 char 数组，请将每个字节进行高低位互换，
    如下图处理(n=7)。如果我们需
    要频繁的处理这样的数据，
    请实现一个高效的处理函数。 */
    char ch[] = "hello world";
    int len = strlen(ch);
    swap(ch, len);

    // 打印处理后的字符串
    printf("处理后的字符地址: ");
    for (int i = 0; i < len; i++) {
        printf("%02X ", (unsigned char)ch[i]); // 以十六进制格式打印每个字节
    }
    printf("\n");

    return 0;
}